/* 
 * File:   Tabuleiro.hpp
 * Author: Ana Paula
 *
 * Created on 2 de Julho de 2011, 14:30
 */

#ifndef TABULEIRO_HPP
#define	TABULEIRO_HPP

#include <string>

namespace jogodavelharedes {

    class Tabuleiro {

    //Atributos private
    private:
        
        int numLinhas;
        int numColunas;
        char** tabuleiro;

    //Atributos public
    public:

        /**
         * Define um TABULEIRO.
         * \param numeroDeLinhas O numero de linhas do tabuleiro.
         * \param numeroDeColunas O numero de colunas do tabuleiro.
         */
        Tabuleiro(int numeroDeLinhas, int numeroDeColunas);

        /**
         * Destrutor
	 */
        ~Tabuleiro();

        /**
         * Coloca uma peça numa determinada posicao do tabuleiro.
         * \param linha linha onde a peça deve ser colocada.
         * \param coluna coluna onde a peça deve ser colocada.
         * \param peca simbolo a ser colocado.
         */
        void setPeca (int linha, int coluna, char peca);

        /**
         * Retorna o simbolo de uma determinada posicao do tabuleiro.
         * \param linha Linha do tabuleiro
         * \param coluna Coluna do tabuleiro
         */
        char getPeca (int linha, int coluna);

        /**
         * Retorna se uma determinada posicao do tabuleiro nao tem simbolo.
         * \param linha Linha do tabuleiro
         * \param coluna Coluna do tabuleiro
         */
        bool estaLivre (int linha, int coluna);

        /**
         * Limpa o tabuleiro.
         */
        void esvaziaTabuleiro();

        /**
         * Retorna o numero de linhas do tabuleiro.
         * \return Retorna o numero de colunas do tabuleiro.
         */
        int getNumeroLinhas();

        /**
         * Retorna o numero de colunas do tabuleiro.
         * \return Retorna o numero de colunas do tabuleiro.
         */
        int getNumeroColunas();

        /**
         * Retorna a quantidade de posicoes livres no tabuleiro.
         * \return Retorna a quantidade de posicoes livres no tabuleiro.
         */
        int getCountPosicoesLivres ();
       
        /**
         * Verifica que posicoes estao livres no tabuleiro
         * \return Retorna a lista de lugares vazios
         */
        std::string* getLista(bool bLivres);

    };
}

#endif	/* TABULEIRO_HPP */

